package com.zybzzz.workapp.entry;


import android.content.Context;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * 容纳大量的计划
 */
public class PlanMsgLab {

    private static PlanMsgLab planMsgLab;

    private List<PlanMsg> planMsgs;

    /**
     * 创建单例，如果有就获取这个单例
     * context参数传入activity对象即可
     * @param: [context]
     * @return: com.zybzzz.workapp.entry.PlanMsgLab
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    public static PlanMsgLab get(Context context){
        if (planMsgLab==null){
            planMsgLab=new PlanMsgLab(context);
        }
        return planMsgLab;
    }



    /**
     * PlanMsgLab的构造函数
     * 在构造的时候就先预先在list中放入20条数据，用作模拟计划，并且显示
     * @param: [context]
     * @return:
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    public PlanMsgLab(Context context){
        //模拟产生模型层 容纳计划信息
        planMsgs=new ArrayList<>();

        for (int i=0;i<5;++i){
            PlanMsg planMsg=new PlanMsg();
            planMsg.setTitle("测试计划"+i);
            planMsg.setRemark("计划备注说明"+i);
            planMsgs.add(planMsg);
        }
    }


    /**
     * 获取到list容器
     * @param: []
     * @return: java.util.List<com.zybzzz.workapp.entry.PlanMsg>
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    public List<PlanMsg> getPlanMsgs() {
        return planMsgs;
    }


    /**
     * 根据传入的id在list容器中获取相对应的计划信息对象（PlanMsg对象）
     * @param: [uuid]
     * @return: com.zybzzz.workapp.entry.PlanMsg
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    public PlanMsg getPlanMsgById(UUID uuid){
        for (PlanMsg planMsg : planMsgs) {
            if (planMsg.getId().equals(uuid)){
                return planMsg;
            }
        }
        return null;
    }


    /**
     * 向list容器中添加计划的接口
     * 如果容器中国已经有了传入参数planMsg对象，表明这个计划原先就已经添加在容器中了，不用再次添加
     * 如果容器中没有，则表明这个传入参数planMsg对象代表着新添加的计划，需要将他放入到容器中
     * @param: [planMsg]
     * @return: void
     * @author: ZhangYiBo
     * @date: 2020/10/15
     */
    public void addPlanMsg(PlanMsg planMsg){
        //可能有更好的替代方法 暂时没有bug 先用着
        if (!planMsgs.contains(planMsg)){
            this.planMsgs.add(planMsg);
        }
    }



}
